/**
 * NSArray+GTExtension.h
 *
 * The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License");
 * you may not use this file except in compliance with the License. You may obtain a copy of the License 
 * at http://www.mozilla.org/MPL/
 * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
 * either express or implied. See the License for the specific language governing rights and limitations 
 * under the License.
 *
 * The Original Code is gcast-toolbox4iphone.
 *
 * The Initial Developers of the Original Code is Giannandrea Castaldi.
 */

#import <SenTestingKit/SenTestingKit.h>
#import <UIKit/UIKit.h>
#import "NSArray+GTExtension.h"

@interface NSArray_GTExtensionTest : SenTestCase {
  
}

@end


@implementation NSArray_GTExtensionTest


- (void)testIsEqualToArrayWithComparingSelector {
  NSArray *firstArray = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
  NSArray *secondArray = [NSArray arrayWithObjects:@"four", @"five", @"six", nil];  
  STAssertTrue([firstArray isEqualToArray:firstArray comparingElementsWith:@selector(compare:)], @"The arrays should be equal");
  STAssertFalse([firstArray isEqualToArray:secondArray comparingElementsWith:@selector(compare:)], @"The arrays should be different");
}

- (void)testAddObjectIfNotPresent {
  NSMutableArray *array = [NSMutableArray array];
  [array addObjectIfNotPresent:@"string"];
  STAssertEqualObjects(array, [NSArray arrayWithObject:@"string"], @"Should contains the string once");
  [array addObjectIfNotPresent:@"string"];
  STAssertEqualObjects(array, [NSArray arrayWithObject:@"string"], @"Should contains the string once");
}

- (void)testFindFirst {
  NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
  STAssertNil([array firstObjectWithReturnValueEqualsTo:@"FOUR" callingSelector:@selector(uppercaseString)], @"Should return null");
  STAssertEqualObjects([array firstObjectWithReturnValueEqualsTo:@"ONE" callingSelector:@selector(uppercaseString)], @"one", @"Should return null");
}



@end
